# 1,从对象加载配置信息
    #定义一个Config类，
        #类里面需要:
        # 开启debug调试
        # 设置数据库URL
        # 不跟踪数据库变化
        # redis绑定的ip
        # redis监听的端口
        # 设置session存储的类型
        # 设置session存储使用的redis对象
        # 开启sessionid的加密(需要使用SECRET_KEY的值)
        # 应用秘钥
        #需要指定session过期时间
# 2, 创建mysql数据库连接对象
# 3,创建redis操作对象
# 4,创建session存储对象
# 5,创建脚本管理器（托管给mgr,可以在命令行传参数）
# 6，创建迁移对象
# 7，将迁移命令添加到脚本管理器中




#定义一个Config类
import datetime
import random

from flask import current_app
from flask_migrate import MigrateCommand
from flask_script import Manager




#4,创建APP应用
from info import create_app

app = create_app("dev")
#5，创建脚本管理器
mgr = Manager(app)

#将迁移命令添加到脚本管理器中
mgr.add_command('mc',MigrateCommand)


#添加一个生成超级管理员的命令，option（命名参数名，dest="函数参数名"）
# 用了这个装饰器就能以命令的方式调用这个函数生成超级管理员，python main.py create_superuser -n 账号 -p 密码
@mgr.option("-name","-n",dest="name")
@mgr.option("-password","-p",dest="password")
def create_superuser(name,password):
    #就是注册一个账号的思路
    #校验发来的账号和密码全不全
    #生成一个用户模型
    #将各个属性和字段添加然后保存到数据库
    #要注意的是有一个是否为超级管理员的标记

    #校验参数
    if not all([name,password]):
        print("参数不足")
        #不往下走了
        return
    #生成一个用户模型
    from info.models import User
    from info import create_app, db
    user = User()
    user.mobile = name
    user.password = password
    user.nick_name = name
    #设置is_admin 的属性为True
    user.is_admin = True
    #保存到数据库
    try:

        db.session.add(user)
        db.session.commit()
    except BaseException as e:
        current_app.logger.error(e)
        db.session.rollback()
    print("超级管理员注册成功")


"""模拟增加用户注册登录"""
def add_test_users():
    from info import db
    from info.models import User
    users = []
    now = datetime.datetime.now()
    for num in range(0, 10000):
        try:
            user = User()
            user.nick_name = "%011d" % num
            user.mobile = "%011d" % num
            user.password_hash = "pbkdf2:sha256:50000$SgZPAbEj$a253b9220b7a916e03bf27119d401c48ff4a1c81d7e00644e0aaf6f3a8c55829"
            user.last_login = now - datetime.timedelta(seconds=random.randint(0, 2678400))
            user.create_time = now - datetime.timedelta(seconds=random.randint(0, 2678400))
            users.append(user)
            print(user.mobile)
        except Exception as e:
            print(e)
    db.session.add_all(users)
    db.session.commit()
    print('OK')


if __name__ == '__main__':
    #用mgr脚本启动
    mgr.run()
    #调用函数增加用户
    # add_test_users()